#include "ThreadPool.hpp"
#include <memory>
#include<iostream>
#include "Log.hpp"
#include "Task.hpp"

using namespace log_ns;



int main()
{
    // 1.开启日志
    EnableScreen();

    int cnt = 10;
    while (cnt--)
    {
        // 不断地像线程池推送任务
        Task t(1, 1);
        ThreadPool<Task>::GetInstance()->Equeue(t);

        LOG(INFO, "equeue a task, %s\n", t.debug().c_str());

        sleep(1);

    }
    ThreadPool<Task>::GetInstance()->Stop();
    // std::cout << "thread pool stop" << std::endl;
    LOG(INFO, "thread pool stop");

    sleep(10);

    return 0;
}

// int main()
// {
//     // 1.开启日志
//     EnableScreen();
//     //std::unique_ptr<ThreadPool> tp = std::make_unique<ThreadPool>; // c++14智能指针

//     ThreadPool<Task> *tp = new ThreadPool<Task>();
//     tp->Init();
//     tp->Start();
//     int cnt = 10;
//     while (cnt--)
//     {
//         // 不断地像线程池推送任务
//         Task t(1, 1);
//         tp->Equeue(t);

//         LOG(INFO, "equeue a task, %s\n", t.debug().c_str());

//         sleep(1);

//     }
//     tp->Stop();
//     // std::cout << "thread pool stop" << std::endl;
//     LOG(INFO, "thread pool stop");

//     sleep(10);

//     return 0;
// }

// int main()
// {
//     EnableScreen();
//     // c语言自带的预处理符号
//     LOG(DEBUG, "HELLO LINUX\n");

//     LOG(DEBUG, "hello: %d, world: %c, hello: %f\n", 1000, 'a', 3.14);
//     sleep(1);
//     LOG(INFO, "hello: %d, world: %c, hello: %f\n", 1000, 'a', 3.14);
//     sleep(1);
//     EnableFile();
//     LOG(WARNING, "hello: %d, world: %c, hello: %f\n", 1000, 'a', 3.14);
//     sleep(1);
//     LOG(ERROR, "hello: %d, world: %c, hello: %f\n", 1000, 'a', 3.14);
//     sleep(1);
//     LOG(FATAL, "hello: %d, world: %c, hello: %f\n", 1000, 'a', 3.14);

//     return 0;
// }

// int main()
// {
// std::unique_ptr<ThreadPool> tp = std::make_unique<ThreadPool>;//c++14智能指针

// ThreadPool<Task> *tp = new ThreadPool<Task>();
// tp->Init();
// tp->Start();
// int cnt = 10;
// while (cnt--)
// {
//     // 不断地像线程池推送任务
//     Task t(1, 1);
//     tp->Equeue(t);
//     sleep(1);
//     std::cout << "cnt: " << cnt << std::endl;
// }
// tp->Stop();
// std::cout << "thread pool stop" << std::endl;
// sleep(10);

//     return 0;
// }